cmake_minimum_required (VERSION 2.8)

set(SOURCES	
	src/bmock/bmock_control_states.cpp
	src/bmock/bmock_func_info.cpp
	src/bmock/bmock_logfile.cpp
	src/bmock/bmock_mutex.cpp
	src/bmock/bmock_non_strict_mocks.cpp
	src/bmock/bmock_strict_mocks.cpp
	src/bmock/bmock_test_mode_control.cpp
	src/bmock/sl_pp_compare.cpp
	src/bmock_argument/bmock_argument.cpp
	src/bmock_argument/bmock_arg_checker.cpp
	src/bmock_argument/bmock_arg_list.cpp
	src/bmock_argument/bmock_arg_val.cpp
	src/bmock_argument/bmock_func_spec.cpp	
	src/bmock_argument/bmock_in_arg_val.cpp
	src/bmock_argument/bmock_in_out_arg.cpp
	src/bmock_argument/bmock_in_out_raw_mem_ptr.cpp
	src/bmock_argument/bmock_in_out_str_arg_val.cpp
	src/bmock_argument/bmock_out_arg_val.cpp
	src/bmock_argument/bmock_out_ptr_arg_val.cpp
	src/bmock_argument/bmock_out_raw_mem_ptr.cpp
	src/bmock_argument/bmock_out_str_arg_val.cpp
	src/bmock_boost_control_tools/bmock_boost_control_tools.cpp
	src/bmock_expectation/bmock_expectation.cpp
	src/bmock_expectation/bmock_exp_checker.cpp
	src/bmock_raw_mem/bmock_in_out_raw_mem.cpp
	src/bmock_raw_mem/bmock_location.cpp
	src/bmock_raw_mem/bmock_memory_mangment.cpp
	src/bmock_raw_mem/bmock_message.cpp
	src/bmock_raw_mem/bmock_raw_len.cpp
	src/bmock_raw_mem/bmock_raw_len_checker.cpp
	src/bmock_raw_mem/bmock_raw_mem.cpp
	src/bmock_raw_mem/bmock_raw_mem_checker.cpp
)

set(HEADERS
	inc/bmock.hpp
	inc/bmock_in_out_raw_mem.hpp
	inc/bmock_util.hpp	
	inc/hex_value.hpp
	inc/pp_assert.hpp
	inc/detail/bmock_any.hpp
	inc/detail/bmock_arg_checker.hpp
	inc/detail/bmock_arg_list.hpp
	inc/detail/bmock_arg_val.hpp
	inc/detail/bmock_argument.hpp
	inc/detail/bmock_check.hpp
	inc/detail/bmock_control_tools.hpp	
	inc/detail/bmock_exp_checker.hpp
	inc/detail/bmock_expand_arg.hpp
	inc/detail/bmock_expect.hpp
	inc/detail/bmock_expectation.hpp
	inc/detail/bmock_fixture.hpp
	inc/detail/bmock_func_info.hpp
	inc/detail/bmock_func_spec.hpp
	inc/detail/bmock_ignore_arg_val.hpp
	inc/detail/bmock_in_arg_val.hpp
	inc/detail/bmock_in_mem_func_ptr.hpp
	inc/detail/bmock_in_out_arg_val.hpp
	inc/detail/bmock_in_out_ptr_arg_val.hpp
	inc/detail/bmock_in_out_raw_mem_ptr.hpp
	inc/detail/bmock_in_out_str_arg_val.hpp
	inc/detail/bmock_location.hpp
	inc/detail/bmock_logfile.hpp
	inc/detail/bmock_mem_func_ptr_holder.hpp
	inc/detail/bmock_memory_managment.hpp
	inc/detail/bmock_message.hpp
	inc/detail/bmock_mock_type.hpp
	inc/detail/bmock_mutex.hpp
	inc/detail/bmock_non_strict_mocks.hpp
	inc/detail/bmock_out_arg_val.hpp
	inc/detail/bmock_out_ptr_arg_val.hpp
	inc/detail/bmock_out_raw_mem_ptr.hpp
	inc/detail/bmock_out_str_arg_val.hpp
	inc/detail/bmock_raw_len.hpp
	inc/detail/bmock_raw_len_checker.hpp
	inc/detail/bmock_raw_mem.hpp
	inc/detail/bmock_raw_mem_checker.hpp
	inc/detail/bmock_result.hpp
	inc/detail/bmock_strict_mocks.hpp
	inc/detail/bmock_test_control_tools.hpp
	inc/detail/bmock_test_mode_control.hpp
	stdafx.h
)

ADD_MSVC_PRECOMPILED_HEADER( stdafx.h stdafx.cpp SOURCES )
include_directories(".")

add_library(bmock STATIC ${SOURCES} ${HEADERS} )

if (MSVC)
	add_definitions(/Z7)
endif(MSVC)

if (MSVC90)
	set_target_properties(bmock PROPERTIES OUTPUT_NAME libbmock-vc90)
elseif(MSVC10)
	set_target_properties(bmock PROPERTIES OUTPUT_NAME libbmock-vc100)
elseif(MSVC11)
	set_target_properties(bmock PROPERTIES OUTPUT_NAME libbmock-vc110)
endif()
